#[doc = r"Register block"]
#[repr(C)]
pub struct RegisterBlock {
    #[doc = "0x00 - Port data output register"]
    pub data_output: crate::Reg<data_output::DATA_OUTPUT_SPEC>,
    #[doc = "0x04 - Port data transfer direction register"]
    pub direction: crate::Reg<direction::DIRECTION_SPEC>,
    _reserved2: [u8; 40usize],
    #[doc = "0x30 - Port interrupt enable register"]
    pub interrupt_enable: crate::Reg<interrupt_enable::INTERRUPT_ENABLE_SPEC>,
    #[doc = "0x34 - Port interrupt mask register"]
    pub interrupt_mask: crate::Reg<interrupt_mask::INTERRUPT_MASK_SPEC>,
    #[doc = "0x38 - Port interrupt type register"]
    pub interrupt_type: crate::Reg<interrupt_type::INTERRUPT_TYPE_SPEC>,
    #[doc = "0x3c - Port interrupt polarity register"]
    pub interrupt_ploarity: crate::Reg<interrupt_ploarity::INTERRUPT_PLOARITY_SPEC>,
    #[doc = "0x40 - Interrupt status registers"]
    pub interrupt_status: crate::Reg<interrupt_status::INTERRUPT_STATUS_SPEC>,
    _reserved_7_interrupt: [u8; 4usize],
    _reserved8: [u8; 8usize],
    #[doc = "0x50 - External port (data input) registers"]
    pub data_input: crate::Reg<data_input::DATA_INPUT_SPEC>,
}
impl RegisterBlock {
    #[doc = "0x44 - Raw interrupt status registers"]
    #[inline(always)]
    pub fn interrupt_clear(&self) -> &crate::Reg<interrupt_clear::INTERRUPT_CLEAR_SPEC> {
        unsafe {
            &*(((self as *const Self) as *const u8).add(68usize)
                as *const crate::Reg<interrupt_clear::INTERRUPT_CLEAR_SPEC>)
        }
    }
    #[doc = "0x44 - Raw interrupt status registers"]
    #[inline(always)]
    pub fn interrupt_status_raw(
        &self,
    ) -> &crate::Reg<interrupt_status_raw::INTERRUPT_STATUS_RAW_SPEC> {
        unsafe {
            &*(((self as *const Self) as *const u8).add(68usize)
                as *const crate::Reg<interrupt_status_raw::INTERRUPT_STATUS_RAW_SPEC>)
        }
    }
}
#[doc = "data_output register accessor: an alias for `Reg<DATA_OUTPUT_SPEC>`"]
pub type DATA_OUTPUT = crate::Reg<data_output::DATA_OUTPUT_SPEC>;
#[doc = "Port data output register"]
pub mod data_output;
#[doc = "direction register accessor: an alias for `Reg<DIRECTION_SPEC>`"]
pub type DIRECTION = crate::Reg<direction::DIRECTION_SPEC>;
#[doc = "Port data transfer direction register"]
pub mod direction;
#[doc = "interrupt_enable register accessor: an alias for `Reg<INTERRUPT_ENABLE_SPEC>`"]
pub type INTERRUPT_ENABLE = crate::Reg<interrupt_enable::INTERRUPT_ENABLE_SPEC>;
#[doc = "Port interrupt enable register"]
pub mod interrupt_enable;
#[doc = "interrupt_mask register accessor: an alias for `Reg<INTERRUPT_MASK_SPEC>`"]
pub type INTERRUPT_MASK = crate::Reg<interrupt_mask::INTERRUPT_MASK_SPEC>;
#[doc = "Port interrupt mask register"]
pub mod interrupt_mask;
#[doc = "interrupt_type register accessor: an alias for `Reg<INTERRUPT_TYPE_SPEC>`"]
pub type INTERRUPT_TYPE = crate::Reg<interrupt_type::INTERRUPT_TYPE_SPEC>;
#[doc = "Port interrupt type register"]
pub mod interrupt_type;
#[doc = "interrupt_ploarity register accessor: an alias for `Reg<INTERRUPT_PLOARITY_SPEC>`"]
pub type INTERRUPT_PLOARITY = crate::Reg<interrupt_ploarity::INTERRUPT_PLOARITY_SPEC>;
#[doc = "Port interrupt polarity register"]
pub mod interrupt_ploarity;
#[doc = "interrupt_status register accessor: an alias for `Reg<INTERRUPT_STATUS_SPEC>`"]
pub type INTERRUPT_STATUS = crate::Reg<interrupt_status::INTERRUPT_STATUS_SPEC>;
#[doc = "Interrupt status registers"]
pub mod interrupt_status;
#[doc = "interrupt_status_raw register accessor: an alias for `Reg<INTERRUPT_STATUS_RAW_SPEC>`"]
pub type INTERRUPT_STATUS_RAW = crate::Reg<interrupt_status_raw::INTERRUPT_STATUS_RAW_SPEC>;
#[doc = "Raw interrupt status registers"]
pub mod interrupt_status_raw;
#[doc = "interrupt_clear register accessor: an alias for `Reg<INTERRUPT_CLEAR_SPEC>`"]
pub type INTERRUPT_CLEAR = crate::Reg<interrupt_clear::INTERRUPT_CLEAR_SPEC>;
#[doc = "Raw interrupt status registers"]
pub mod interrupt_clear;
#[doc = "data_input register accessor: an alias for `Reg<DATA_INPUT_SPEC>`"]
pub type DATA_INPUT = crate::Reg<data_input::DATA_INPUT_SPEC>;
#[doc = "External port (data input) registers"]
pub mod data_input;
